HPC6a インスタンスを AWS ParallelCluster で動かしてハードウェアスペックを調べてみた
re:Invent 2021 でアナウンスされていたハイパフォーマンスコンピューティング(HPC)向けインスタンスタイプの HPC6a インスタンスが一部リージョンで利用可能になりました。 HPC向けなので AWS Batch 、AWS ParallelCluster で利用する機会がありそうです。
re: Invent 2021 速報記事
本記事は AWS ParallelCluster で HPC6a インスタンスの起動検証を目的としています。計算処理は行ったり、ベンチマークは実施しません。
新インスタンスタイプの動作確認用クラスターの設定方法、注意事項を紹介します。
AWS ParallelCluster の検証結果
2022/1/12 現在の情報です。
- us-east-2(オハイオ)の1AZのみで起動できます。
- コンピュートノードを起動するサブネットの選択に注意してください。
- ap-northeat-1(東京)ではまだ利用できません。
- スポットインスタンスの起動は非対応です。
- クラスターの設定でEFA有効化推奨です。
HPC6a インスタンスの特徴
HPC6a シリーズは現在 hpc6a.48xlarge 一種類のみ提供されています。同等の x86 ベースのコンピューティング最適化インスタンスに比べて最大 65% 優れたコストパフォーマンスに優れているようです。
物理96コアが特徴的ですね。AMD Ryzen/EPIC の SMT(Simultaneous Multi-Threading)は無効化されています。SMT は Intel Xeon の HT(Hyper Threading)と同じような仕組みです。
項目 | 値 | 備考 |
---|---|---|
CPU | 96(物理コア数) | AMD EPYC 7003シリーズプロセッサ |
RAM | 384 GB | DDR4 |
ネットワーク帯域幅 | 500 Mbps | VPC、S3 以外への帯域幅 |
ネットワーク帯域幅 | 25 Gbps | VPC、S3 への帯域幅 |
EFAネットワーク帯域幅 | 100 Gbps | ノード間の帯域幅 |
Elastic Fabric Adapter | デフォルト有効化 | Elastic Fabric Adapter - Amazon Elastic Compute Cloud |
同じ時期に発表された C7g シリーズが DDR5 積んでいたので HPC6a もかと思ったのですが DDR4 でした。
検証環境
HPC6a 提供リージョンはus-east-2
と、GovCloud
のみです。(2022/1/12現在)
項目 | 値 |
---|---|
AWS ParallelCluster | 3.0.2 |
Job Scheduler | Slurm |
OS | Ubuntu 20.04 LTS |
CPU | AMD |
Head Node | t3a.micro |
Compute Node | hpc6a.48xlarge |
クラスター作成準備
us-east-2
リージョンにクラスターを作成します。
サンプルコンフィグ
気をつけるポイントを以下にまとめました。
- HPC6a が提供されているリージョンを選択
- ヘッドノードはAMDのCPUのインスタンスタイプなら起動テストする分には問題ありません
- コンピュートノードの起動サブネットID(AZ)の選択
- オンデマンドインスタンスを指定
- コンピュートノードのEFA有効化
Region: us-east-2 Image: Os: ubuntu2004 HeadNode: InstanceType: t3a.micro Networking: ElasticIp: false SubnetId: subnet-0fdc64a83ef8b3b59 Ssh: KeyName: sandbox-key-useast2 LocalStorage: RootVolume: Size: 50 Encrypted: false VolumeType: gp3 Iops: 3000 Throughput: 125 Iam: S3Access: - BucketName: blog-parallelcluster-postinstall EnableWriteAccess: False AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore Scheduling: Scheduler: slurm SlurmQueues: - Name: hpc-instances ComputeResources: - Name: hpc6a48xlarge InstanceType: hpc6a.48xlarge MinCount: 0 MaxCount: 10 Efa: Enabled: true ComputeSettings: LocalStorage: RootVolume: Size: 35 Encrypted: false VolumeType: gp3 Iops: 3000 Throughput: 125 CapacityType: ONDEMAND Networking: SubnetIds: - subnet-0fdc64a83ef8b3b59 # Specific AZ only PlacementGroup: Enabled: true Iam: S3Access: - BucketName: blog-parallelcluster-postinstall KeyName: read_only/ EnableWriteAccess: False AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
つまづき
個人的にはいい感じに作ったコンフィグからクラスターを作成してみたところ以下のエラーが出力されました。
- コンピュートノードのEFA有効化推奨
- スポットインスタンスは非対応
us-east-2
リージョンの1AZのみで起動できる
{ "configurationValidationErrors": [ { "level": "WARNING", "type": "EfaValidator", "message": "Instance type 'hpc6a.48xlarge' supports EFA, but it is not enabled." }, { "level": "ERROR", "type": "CapacityTypeValidator", "message": "Usage type 'spot' not supported with instance type 'hpc6a.48xlarge'" }, { "level": "ERROR", "type": "ComputeResourceLaunchTemplateValidator", "message": "Your requested instance type (hpc6a.48xlarge) is not supported in the Availability Zone (us-east-2a) of your requested subnet (subnet-06bef5c18e9a5f4c6). Please retry your request by choosing a subnet in ('us-east-2b',). " } ], "message": "Invalid cluster configuration." }
EFA確認
EFAに対応しているインスタンスタイプなので有効化した方が良いのはごもっともです。以下のドキュメント参考に有効化します。
ComputeResources: Efa: Enabled: true
スポットインスタンス確認
試しにマネージメントコンソールからスポットインスタンスを作成しようとしても無理でした。単純に空きキャパシティがないだけの可能性もあります。
Spot Instance advisorを確認してみましたが HPC6a インスタンスは載っていませんでした。
クラスター作成時に仮にスポットインスタンスの空きキャパシティがなかったとしてもクラスターの作成はできます。今回のエラーメッセージから本当にスポットインスタンスに対応していないものと思われます。
2022/1/15追記正しい確認方法がわかりました。ご興味があれば以下のリンクもご参照ください。
AZ確認
us-east-2
で hpc6a.48xlarge が使えるAZを調べました。1AZしか対応していないことがわかりました。
$ aws ec2 describe-instance-type-offerings --location-type availability-zone --filters Name=instance-type,Values=hpc6a.48xlarge --region us-east-2 --output table --------------------------------------------------------- | DescribeInstanceTypeOfferings | +-------------------------------------------------------+ || InstanceTypeOfferings || |+----------------+--------------+---------------------+| || InstanceType | Location | LocationType || |+----------------+--------------+---------------------+| || hpc6a.48xlarge| us-east-2b | availability-zone || |+----------------+--------------+---------------------+|
私のアカウントではus-east-2b
でした。アカウントによって異なると思いますので同じコマンドでお確かめください。
※ マネージメントコンソールからのスポットインスタンスの起動確認もus-east-2b
で試しています。
クラスター作成と起動
サンプルコンフィグを用いてクラスターを作成します。
pcluster create-cluster --cluster-name hpc-cluster --cluster-configuration hpc-cluster.yml
クラスター完成まで10分少々待ちます。
{ "cluster": { "clusterName": "hpc-cluster", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:us-east-2:123456789012:stack/hpc-cluster/d50226c0-7362-11ec-a557-020a4e309172", "region": "us-east-2", "version": "3.0.2", "clusterStatus": "CREATE_IN_PROGRESS" } }
クラスター作成の結果を確認します。
pcluster describe-cluster --cluster-name hpc-cluster
作成完了しました。
{ "creationTime": "2022-01-12T04:48:06.105Z", "headNode": { "launchTime": "2022-01-13T01:20:22.000Z", "instanceId": "i-0716ef8911dd75f6b", "publicIpAddress": "3.140.252.172", "instanceType": "t3a.micro", "state": "running", "privateIpAddress": "10.0.2.175" }, "version": "3.0.2", "clusterConfiguration": { "url": "https://parallelcluster-7567a8c3e5e4252c-v1-do-not-delete.s3.us-east-2.amazonaws.com/parallelcluster/3.0.2/clusters/hpc-cluster-cwdhcxoohu4im36b/configs/cluster-config.yaml?hoge" }, "tags": [ { "value": "3.0.2", "key": "parallelcluster:version" } ], "cloudFormationStackStatus": "CREATE_COMPLETE", "clusterName": "hpc-cluster", "computeFleetStatus": "RUNNING", "cloudformationStackArn": "arn:aws:cloudformation:us-east-2:123456789012:stack/hpc-cluster/d50226c0-7362-11ec-a557-020a4e309172", "lastUpdatedTime": "2022-01-12T04:48:06.105Z", "region": "us-east-2", "clusterStatus": "CREATE_COMPLETE" }
ヘッドノードが起動しています。
ヘッドノードにログインします。2ノード指定でテストジョブを投げて hpc6a インスタンスが起動できるか確認します。
sbatch -N2 test.sh
hpc6a.48xlarge 2台がコンピュートノードで起動しました。
ParallelCluster のクラスター作成と動作確認は以上です。
ハードウェアを調べてみる
コンピュートノードで起動してきた hpc6a.48xlarge インスタンスにログインしてスペックを確認します。
CPU確認
AMD EPYC 7R13 Processorなので M6a シリーズと同型です。
「M6a」第3世代 AMD EPYC プロセッサーを搭載したEC2インスタンスがリリースされました | DevelopersIO
processor : 0 vendor_id : AuthenticAMD cpu family : 25 model : 1 model name : AMD EPYC 7R13 Processor stepping : 1 microcode : 0xa001143 cpu MHz : 3023.499 cache size : 512 KB physical id : 0 siblings : 48 core id : 0 cpu cores : 48 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 16 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf tsc_known_freq pni p clmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetch topoext perfctr_core invpcid_single ssbd ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 clzero xsaveerptr rdpru wbnoinvd arat npt nrip_save vaes vpclmulqdq rdpid bugs : sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass bogomips : 5299.98 TLB size : 2560 4K pages clflush size : 64 cache_alignment : 64 address sizes : 48 bits physical, 48 bits virtual power management: ...snip...
メモリ確認
96 GB * 4 = 384 GB の構成でした。ここで DDR4 のメモリと確認できました。ドキュメントや公式アカウントでは触れられていませんでした。
$ sudo dmidecode -t memory # dmidecode 3.2 Getting SMBIOS data from sysfs. SMBIOS 2.7 present. Handle 0x000C, DMI type 16, 23 bytes Physical Memory Array Location: System Board Or Motherboard Use: System Memory Error Correction Type: Unknown Maximum Capacity: 384 GB Error Information Handle: Not Provided Number Of Devices: 1 Handle 0x000D, DMI type 17, 34 bytes Memory Device Array Handle: 0x000C Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 96 GB Form Factor: DIMM Set: None Locator: Not Specified Bank Locator: Not Specified Type: DDR4 Type Detail: Static Column Pseudo-static Synchronous Window DRAM Speed: 2933 MT/s Manufacturer: Not Specified Serial Number: Not Specified Asset Tag: Not Specified Part Number: Not Specified Rank: Unknown Configured Memory Speed: Unknown Handle 0x0010, DMI type 17, 34 bytes Memory Device Array Handle: 0x000C Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 96 GB Form Factor: DIMM Set: None Locator: Not Specified Bank Locator: Not Specified Type: DDR4 Type Detail: Static Column Pseudo-static Synchronous Window DRAM Speed: 2933 MT/s Manufacturer: Not Specified Serial Number: Not Specified Asset Tag: Not Specified Part Number: Not Specified Rank: Unknown Configured Memory Speed: Unknown Handle 0x0013, DMI type 17, 34 bytes Memory Device Array Handle: 0x000C Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 96 GB Form Factor: DIMM Set: None Locator: Not Specified Bank Locator: Not Specified Type: DDR4 Type Detail: Static Column Pseudo-static Synchronous Window DRAM Speed: 2933 MT/s Manufacturer: Not Specified Serial Number: Not Specified Asset Tag: Not Specified Part Number: Not Specified Rank: Unknown Configured Memory Speed: Unknown Handle 0x0016, DMI type 17, 34 bytes Memory Device Array Handle: 0x000C Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 96 GB Form Factor: DIMM Set: None Locator: Not Specified Bank Locator: Not Specified Type: DDR4 Type Detail: Static Column Pseudo-static Synchronous Window DRAM Speed: 2933 MT/s Manufacturer: Not Specified Serial Number: Not Specified Asset Tag: Not Specified Part Number: Not Specified Rank: Unknown Configured Memory Speed: Unknown
ネットワーク確認
イーサネットコントローラーからEFAの名前を確認できました。
$ lspci 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 00:01.3 Non-VGA unclassified device: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08) 00:03.0 VGA compatible controller: Amazon.com, Inc. Device 1111 00:04.0 Non-Volatile memory controller: Amazon.com, Inc. Device 8061 00:05.0 Ethernet controller: Amazon.com, Inc. Elastic Network Adapter (ENA) 00:06.0 Ethernet controller: Amazon.com, Inc. Device efa1
まとめ
- us-east-2(オハイオ)の1AZのみで起動できます。
- 事前に起動できるAZを確認してからコンピュートノードのサブネットを指定しましょう。
- スポットインスタンスの起動は非対応につき、クラスターの設定は
ONDEMAND
指定のみ有効です。 - クラスター設定でEFA有効化推奨です。
終わりに
SMTがデフォルトで無効化されておりHPCの名を冠するだけあってHPC仕様でした。物理96コアのCPU持つインスタンスなので1台の利用でも効率的に計算できるケースはありそうです。ParallelCluster で利用するならスポットインスタンス対応が望まれますね。東京リージョンへは上陸していませんので気長に待ちましょう。使えるようになりましたら今回のサンプルコンフィグをベースに動作確認できると思いますので参考にしていただければと思います。今後は FSx for Lustre との連携など他サービスとの組み合わせの検証したいと思います。パワフルなマシンなのでパワフルなストレージを活用したいですよね。